package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

// 全局中间件
func m10(c *gin.Context) {
	fmt.Println("m10 ...in ")
	c.Set("a1", "a1")
}

func main() {
	router := gin.Default()
	//全局中间件  所有属于router的请求都会调用
	router.Use(m10)
	//中间件1请求 → 中间件2请求 → 中间件3请求 → 中间件3响应 → 中间件2响应 → 中间件1响应
	router.GET("/",
		func(context *gin.Context) {
			context.Get("a1")
			context.JSON(200, gin.H{"msg": "1"})
			fmt.Println("1")
			//.Next前为请求中间件 后为响应中间件
			context.Next()
			fmt.Println("2")
		},
		func(context *gin.Context) {
			context.JSON(200, gin.H{"msg": "2"})
			fmt.Println("1")
			//.Next前为请求中间件 后为响应中间件
			context.Next()
			fmt.Println("2")
			//拦截后续中间件响应
			context.Abort()
		},
		func(context *gin.Context) {
			context.JSON(200, gin.H{"msg": "3"})
		},
	)

	router.Run(":8080")
}
